package com.t2t.top.proxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**
 * dynProxy动态代理类克服了proxy实现相应的method的缺陷。
 * 从JDK 1.3以来，Java 语言通过java.lang.reflex库提供的三个类直接支持代理
 */
public class FacadeProxy implements InvocationHandler {
    private Object target;

    /**
     * @param target
     */
    public Object newProxyInstance(Object target) {
        this.target = target;
        // 取得代理对象  
        return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        Object result = null;
        System.out.println("Proxy start...");
        System.out.println("method name:" + method.getName());
        result = method.invoke(target, args);
        System.out.println("Proxy end...");
        return result;
    }

}  